Computer systems typically comprise a combination of computer programs and hardware, such as semiconductors, transistors, chips, circuit boards, storage devices, and processors. The computer programs are stored in the storage devices and are executed by the processors. The storage devices also store data.
Some storage devices support a type of command known as a skip read. The skip read command specifies a logical block address (LBA), a transfer length, and a skip mask. The skip mask specifies which data in a range of logical blocks of data is requested to be transferred (read or copied) from the storage device to the host computer system that issues the skip read command. A bit set to one in the skip mask typically means that the data corresponding to the bit is transferred from the storage device to the issuing host computer system. A bit set to zero in the skip mask typically means that the corresponding block is skipped and is not transferred from the storage device to the host computer system. A block is the smallest unit of data that the storage device transfers. The transfer length specifies the number of blocks to be transferred from the storage device to the host system and matches the number of bits set to one in the skip mask.
For example, if the transfer length is three, then exactly three bits are set to one in the skip mask. The logical block address specified in the command is the address of a block on the storage device, which corresponds to, or is identified by, the first bit (typically the left-most or most significant bit) in the skip mask. The block at the logical block address specified by the command may or may not be transferred from the storage device, depending on whether or not the first bit in the skip mask is set. For example, for a skip command that specifies a logical block address of 64, a transfer length of 3, and a binary skip mask of 10011b, a data block at logical block address 64 is transferred, data blocks at logical block addresses 65 and 66 are skipped, and data blocks from logical block addresses 67 and 68 are transferred.